#ifndef VectorMath_H
#define VectorMath_H

#include <iostream>
#include <string>
#include <sstream>
#include <cmath>
using namespace std;

template<class T>
class VectorMath{
      
      private:
              T * nums;
              unsigned dim;
                      
      public:
             VectorMath( unsigned dim = 1 );
             VectorMath(const VectorMath<T> &);
             ~VectorMath();
             
             unsigned size() const;
             void resize( unsigned newSize );
             
             T& operator [](unsigned i);
             T operator [](unsigned i) const;
             
             VectorMath<T> & operator = (const VectorMath<T> &);
             VectorMath<T>   operator + (const VectorMath<T> &) const;
             VectorMath<T>   operator - (const VectorMath<T> &) const;
             VectorMath<T>   operator * (const VectorMath<T> &) const;
             VectorMath<T>   operator * ( const T ) const;
             bool operator == (const VectorMath<T> &) const;
             
             T norma();
             
             string toString();
             static bool test();
        
};

template class VectorMath <float>;
template class VectorMath <double>;
template class VectorMath <long double>;

#endif
